如果把軟體的原始碼比喻為名廚的「獨家私房食譜」,那麼軟體安全就絕不只是把配方與步驟寫正確而已。即便食譜完美無瑕,若料理廚房雜亂無章、出入人員未受管控,或是出餐時缺少密封包裝,整道佳餚在送達饕客手中前,仍會面臨嚴重的食安污染危機。
軟體工程也是相同的道理。資安裡的「環境」不能只窄化為「把OS環境更新就好」,而是涵蓋「從編譯器、相依套件傳輸、執行期隔離到出廠發布」的整條軟體生產鏈(Software Pipeline)
| 層級 | 核心狀態 | Auth | Branch | Audit |
|---|---|---|---|---|
| Level 0 | 未管控 | 全員讀寫,無 MFA | 允許直推與 Force Push,無審查 | 無集中日誌,無法追溯 |
| Level 1 | 基礎人工 | 區分基本角色,管理員開 MFA | 宣導 PR 但未強制鎖死主分支 | 僅依賴 Git commit log |
| Level 2 | 標準規範 | 全員強制 MFA,落實 RBAC | 強制保護分支,禁直推且需同儕核可 | 集中記錄存取與設定變更 |
| Level 3 | 自動防禦 | 整合 SSO/IAM,離職即時收回權限 | 需代碼簽章、CI 門禁全綠與 Code Owner 核可 | 實時送 SIEM 監控異常行為 |
| 層級 | 核心狀態 | Detection | Enforcement | Management |
|---|---|---|---|---|
| Level 0 | 未管控 | 完全無金鑰掃描機制,程式碼常寫死機敏資料 | 提交與建置無阻擋,洩漏無人知曉 | 金鑰明文散落於原始碼或設定檔中 |
| Level 1 | 基礎人工 | 僅依賴開發者自律,或偶爾以指令手動搜尋 | 發現洩漏後採人工手動移除或覆寫 commit | 未建立集中管理機制,多數金鑰未輪替 |
| Level 2 | 標準自動化 | 整合 CI/CD 掃描與本地 Pre-commit Hook 攔截 | 檢測到高風險 Secret 觸發 Break-the-Build | 結合外部 Key Vault 集中託管與動態注入 |
| Level 3 | 全面防禦 | 涵蓋歷史 Commit 全量回溯與公開儲存庫監控 | 偵測洩漏自動阻斷並即時發送警報至 SIEM | 聯動 API 自動使外洩金鑰失效並觸發輪替 |
(開發 Dev、測試 QA、正式線上 Prod 環境)切分出各自獨立、互不干擾的執行環境。這樣做是為了防止跨環境的交叉污染、保護裡面的敏感資料
避免直接寫死在程式碼裡、把 web.config 或 .env 檔案連同程式庫一起送進版控裡
OWASP The DevSecOps Verification Standard
https://dsovs.com/
CODE-001 Secure Development Environment
CODE-002 Hardcoded Secrets Detection
CODE-003 Manual Secure Code Review
CODE-004 Static Application Security Testing (SAST)
CODE-005 Software Composition Analysis (SCA)
CODE-006 Software License Compliance
CODE-007 Inline IDE Secure Code Analysis
CODE-008 Container Security Scanning
CODE-009 Secure Dependency Management